#include"Tree.h"
BTNode* BuyNode(BTDataType x)
{
    BTNode *newnode=(BTNode*)malloc(sizeof(BTNode));
    newnode->data=x;
    newnode->right=NULL;
    newnode->left=NULL;
    return  newnode;
}


BTNode* CreatBinaryTree()//链接节点
{
    BTNode*node1= BuyNode('A');
    BTNode*node2=BuyNode('B');
    BTNode*node3=BuyNode('C');
    BTNode* node4 = BuyNode('D');
    BTNode* node5 = BuyNode('E');
    BTNode* node6 = BuyNode('F');
    BTNode* node7 = BuyNode('H');
    node1->left = node2;
    node1->right = node4;
    node2->left = node3;
    node2->right=node7;
    node4->left = node5;
    node4->right = node6;
    return node1;
}

void Test()
{
    BTNode* ret=CreatBinaryTree();
    int number=0;
// 二叉树节点个数
   number= BinaryTreeSize(ret);
   printf("%d\n",number);
// 二叉树叶子节点个数
    number =BinaryTreeLeafSize(ret);
    printf("%d\n",number);
// 二叉树第k层节点个数
   number= BinaryTreeLevelKSize(ret, 3);
    printf("%d\n",number);
// 二叉树查找值为x的节点
    BTNode* value=BinaryTreeFind(ret, 'B');
    if(value!=NULL)
    {
        printf("找到了");
    }
// 二叉树前序遍历
BinaryTreePrevOrder(ret);
// 二叉树中序遍历
  BinaryTreeInOrder(ret);
// 二叉树后序遍历
    BinaryTreePostOrder(ret);
// 层序遍历
   BinaryTreeLevelOrder(ret);
// 判断二叉树是否是完全二叉树
   BinaryTreeComplete(ret);

}

void  Test2()
{
    //层序遍历
    BTNode* ret=CreatBinaryTree();
    BinaryTreeLevelOrder(ret);

    //判断一棵二叉树是不是完全二叉树
    if(BinaryTreeComplete(ret))
    {
        printf("完全二叉树");
    }
}

int main() {

    //Test();
    Test2();
    return 0;
}
